#!/bin/bash
# скрипт для проверки прокси-серверов по списку
# использует программу proxycheck
# (ищет открытые прокси HTTP CONNECT, SOCKS)
# ./script.sh
# ./script.sh --no-gen - не создавать список 
# (не перезаписывать список адресов для проверки)
# файл LIST: с каждой строчки новый IP адрес

RESULT="result.txt"
LIST="list.txt"

# количество одновременно запускаемых программ
# количество одновременно проверяемых адресов
NUMPROCS=20

progpath=`which proxycheck`
if [ "$progpath" == "" ]; then
 echo "Please install proxycheck!"
 exit
fi


echo "" > $RESULT

function makelist {
	local BEGIN=$2
	local END=$3
	for ((i=BEGIN;i<=END;i++)); do
		for j in {0..255}
		do
		   echo "10.$1.$i.$j" >> $LIST
		done
	done
}

if [ "$1" == "--no-gen" ]; then
	echo "no generate list"
else
	echo "" > $LIST
	# заполняем файл адресами
	# некоторые можно закомментировать
	# или добавить свои
	echo "creating list"
	makelist 48 44 55
	makelist 50 16 19
	makelist 50 56 59
	makelist 50 88 91
	makelist 51 40 43
	makelist 51 96 99
	makelist 51 144 147
	makelist 53 196 199
	makelist 55 4 7
	makelist 55 20 23
	makelist 55 40 43
	makelist 55 184 187
	makelist 55 172 175
	makelist 57 76 79
	makelist 57 244 247
	makelist 59 72 75
	makelist 59 208 211
	makelist 61 0 3
	makelist 61 16 19
	makelist 62 36 39
	makelist 62 84 87
	makelist 62 144 147
	makelist 62 132 139
	makelist 62 160 163
	makelist 62 176 179
	makelist 62 180 183
	makelist 62 196 199
	makelist 62 224 238
	makelist 62 232 235
	makelist 62 248 251
	echo "Done."
fi

echo "Press Ctrl+C to stop or wait"
echo "check file $RESULT for results"
echo "below will be current checked address"

# разделитель в файле - новая строка
IFS="
"

i=0

# перебираем строки файла
for line in `cat $LIST`;do
	i=$(($i + 1))
	if [ "$i" -gt "$NUMPROCS" ]; then
		i=0
		wait
	else
		echo "$line"
		arg_list=("-d" "ftp.narod.ru:21" "-t" "5" "-c" "chat::Libra" "$line")
		proxycheck "${arg_list[@]}" &>> $RESULT &
		#proxycheck -vv -d ftp.narod.ru:21 -t 7 -c chat::Libra $line &>> $RESULT
	fi
done

echo "Done."



